/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.lsi.sistemasdevendas.dao;
import br.com.lsi.sistemasdevendas.model.Produto;
import br.com.lsi.sistemasdevendas.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author lucia
 */
public class ProdutoDao {
    private Connection connection;

    public ProdutoDao() {

    }

    public void salvar(Produto produto) {

        try {
            connection = ConnectionFactory.getConnection();

            // definir o comando SQL
            String sql = "INSERT INTO Produto (id, codigo, nome, valor,,fornecedor,estoque) VALUES (?,?,?,?,?)";
            // obter statement a partir da conex�o
            PreparedStatement st = connection.prepareStatement(sql);
            // preencher statement
            st.setString(1, produto.getCodigo());
            st.setString(2, produto.getNome());
            st.setString(3, produto.getValor());
            st.setString(4, produto.getFornecedor());
            st.setString(5, produto.getEstoque());
            st.setInt(6, produto.getId());
           

            // executar comando
            st.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();

        } finally {

            try {
                connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(FuncionarioDao.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }

    public void alterar(Produto produto) {

        try {
            connection = ConnectionFactory.getConnection();

            String sql = "UPDATE Produto SET codigo = ?, nome = ?, valor = ?,fornecedor = ?,estoque = ? WHERE id = ?";
            // obter statement a partir da conex�o
            PreparedStatement st = connection.prepareStatement(sql);
            // preencher statement

            st.setString(1, produto.getCodigo());
            st.setString(2, produto.getNome());
            st.setString(3, produto.getValor());
            st.setString(4, produto.getFornecedor());
            st.setString(5, produto.getEstoque());
             st.setInt(6, produto.getId());
            // executar comando
            st.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            try {
                connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDao.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }

    public void excluir(Produto produto) {

        try {

            connection = ConnectionFactory.getConnection();

            // definir o comando SQL
            String sql = "DELETE FROM Produto WHERE id = ?";
            // obter statement a partir da conex�o
            PreparedStatement st = connection.prepareStatement(sql);
            // preencher statement
            st.setString(1, produto.getCodigo());
            // executar comando
            st.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDao.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }

    public List<Produto> listar() {

        List<Produto> lista = new ArrayList<Produto>();

        try {
            connection = ConnectionFactory.getConnection();
            // definir o comando SQL
            String sql = "SELECT * FROM produto";
            // obter statement a partir da conex�o
            PreparedStatement st = connection.prepareStatement(sql);

            // executar comando
            ResultSet rs = st.executeQuery();

            while (rs.next()) {

                Produto produto = new Produto();

                produto.setNome(rs.getString("nome"));
                produto.setValor(rs.getString("valor"));
                 produto.setEstoque(rs.getString("fornecedor"));
                produto.setEstoque(rs.getString("estoque"));
                produto.setCodigo(rs.getString("codigo"));
                

                lista.add(produto);
            }

            return lista;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDao.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

    }
}
